home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
501 Great Games
/
501 Great Games - Volume One (2001)(Guildhall Leisure Services).iso
/
SPAN-IT!
/
HELP.TXT
< prev
next >
Wrap
Text File
|
1993-06-30
|
15KB
|
422 lines
The information in this file is the non-formatted version of the
Windows 3.1 (tm) Help File.
Object of the Game
What are Personalities?
Registration
Basic Personality Concepts
Personality Factor Definitions
About the Author
The #1 Beta Man
***
Object of the Game
***
Span-It! is a two-player connect-the-dot game. Each player is
assigned an orientation at the start of the game. One player
is horizontal and the other is vertical. Players alternate turns
placing connectors on the board. The object of the game is
for each player to span the board in the direction of his/her
favored orientation by completing a path from one end to
another.
The challenge is to block your opponent while still making
progress. A game will never end in a draw. Someone always
wins (or quits!)
By default, Span-It! assumes the horizontal player is human,
and the vertical player is the computer using a default
personality. Any combination of human and computer
players is allowed.
***
What are Personalities?
***
Span-It! has an exciting option that is not available in many
games. Not only is it possible to play against the computer,
but you may define virtually every aspect of how the
computer plays.
Like many game playing programs, Span-It! assigns a
number to the perceived importance of every empty position
on the game board. This number is called the weight. The
board position (node) with the best weight is the one Span-It!
will select for the next move.
The computer assigns the weights based on a well-defined
set of factors. For example, Span-It! will add the value of the
PathIsWinner factor to the weight of an empty position that
can win the game. There are several factors that influence
the weight of a node.
A personality is a set of values assigned to the factors used
by the computer during auto-play mode. When you press
one of the "Load Personality" buttons in the new game dialog
box, you may select different personalities. Some
personalities are more "intelligent" than others. You also may
edit or create your own.
Remember that personalities only influence the way the
computer plays. Human players probably use different
methods to "calculate" moves. The selected personality for a
human player is the one that the HINT menu option uses.
The way to tell the computer to play instead of a human is by
checking the "computer plays" box in each player definition
section of the new game dialog box.
It is possible to have the computer play itself using two
different personalities. The "referee" is a completely different
part of the program. The opposing personalities are not
allowed to cheat!
***
Registration
***
Span-It!
Copyright (c) 1993, Mark T. Chapman
All Rights Reserved
Span-It! is shareware. You may try the program free of charge and may
make copies for others. If you continue to play Span-It!, a $15
registration fee is required. This program may be distributed freely or for
a nominal media charge (less than $5) provided that no modifications
are made to any files. Authenticity may be verified for free by the
program's author via. SASE for a limited time. For registration
information, see the file REGISTER.TXT or REGISTRATION under the
HELP menu.
THE PROGRAM IS PROVIDED "AS-IS". NO WARRANTIES OF ANY
KIND, EXPRESS OR IMPLIED, ARE MADE AS TO IT OR ANY
MEDIUM IT MAY BE ON. NO REMEDY IS PROVIDED BY THE
AUTHOR FOR INDIRECT, CONSEQUENTIAL, PUNITIVE OR
INCIDENTAL DAMAGES ARISING FROM IT, INCLUDING SUCH FROM
NEGLIGENCE, STRICT LIABILITY, OR BREACH OF WARRANTY OR
CONTRACT, EVEN AFTER NOTICE OF THE POSSIBILITY OF SUCH
DAMAGES.
USE AT YOUR OWN RISK.
For $15 registration (plus shipping) you will receive:
1. Your own personalized copy of this and the next release
of Span-It!
2. Prototypes of Span-It! on alternate operating systems.
3. The Span-It! Toolkit. Several programs that will help you
create better personalities.
4. One entry per person in the free Span-It! Ultimate
Personality Competition. (Registration is not required to
enter the competition. Just mail a disk or printout of your best
Span-It! personality to the registration address below.
Winning personalities will be included in the next release of
Span-It!)
Registration Forms can be printed via. the help screen (FILE |
PRINT TOPIC) or else you may copy the file REGISTER.TXT
to the printer from DOS by:
C:\SPANIT\> COPY REGISTER.TXT PRN:
Please send registration of $15 U.S. (plus $2 shipping in
Continental United States, $5 elsewhere) to:
Mark Chapman
Span-It! Registration
1126 Wauwatosa Rd.
Cedarburg, WI 53012
Your name and shipping address:
Media type (3.5" or 5.25" floppy disk):
Your Span-It! handle (the name to appear on the
personalized "About" screen):
Don't forget to enter your best personality in the Span-It!
Ultimate Personality Competition.
For academic discussion, my Internet address is
chapman@miller.cs.uwm.edu.
Your suggestions are always welcome.
Watch for the I.B.M. OS/2 2.1 version soon!
Thank You for trying my game.
***
Personality Factor Descriptions
***
Before reading this section, please make sure you are familiar
with the material in Basic Personality Concepts
This is a step-by-step description of how the value of a trial
node is computed. Part A describes how the weight of a
single trial node is computed. Part B describes how all trial
nodes on the board are compared to select the best move.
Part A: Compute the weight of a single trial node
1. Determine the initial weight of the trial node.
NodeMajor: If the trial node is a major node, assign
NodeMajor to the initial weight of the trial node.
NodeMinor: If the trial node is minor node, assign
NodeMinor to the initial weight of the trial node.
NodeRandom: Always add a random number between 0
and NodeRandom to the weight of the trial node.
2. Add the change in path weight to the weight of the trial
node.
The path weight may be computed for any Path. It does not
matter if the path is a Real Path or a Resultant Path. All we
care about are the characteristics of the connected set of
nodes. The order the nodes were connected will not change
the path weight.
A path weight PW is computed as follows:
PathMajorSpan: Assign variable PS to the number of rows
or columns the path spans in the major direction. Assign
the initial path weight to:
PW = (Sign of PathMajorSpan) * (AbsoluteValue of
PathMajorSpan)^PS.
PathMinorSpan: Assign variable ps to the number of rows
or columns the path spans in the minor direction. Add the
PathMinorSpan factor into the path weight by the following
formula:
PW = PW + (Sign of Path Major Span) * (Absolute
Value of PathMinorSpan)^ps.
PathIsAnchored: If the path is connected to a major edge,
add PathIsAnchored to the value of PW. (Note: If a path is
anchored at two opposite major edges, the path is a
winner).
if the path is connected to a major edge,
PW = PW + PathIsAnchored
PathIsWinner: If a path spans the board in the major
direction, add PathIsWinner to W. (The value of
PathIsWinner usually is very large compared to every
other factor.)
If the path wins the game
PW = PW + PathIsWinner
PathMemberCount: Assign M to the total number of nodes
in a path.
PW = PW + PathMemberCount ^M .
Now that we know how to compute the weight of a path, let's
see how path weight influences the value of the trial node.
A. Identify the real paths that the current player owns that are
adjacent to the trial node.
B. Compute the Existing Path Weight (EPW) as the sum of
the PW of the paths identified in (A).
C. Generate the resultant path.
D. Compute the Resultant Path Weight (RPW).
E. Add the change in path weight (RPW minus EPW) to the
weight of the trial node.
3. Add the change in board weight to the weight of the trial
node.
BoardPathCount: Assign np = the number of new paths
created by selecting the trial node.
NP = 1 (When a new path is started)
NP = 0 (When an existing path is expanded)
NP = -1 (When two paths are merged)
Now add NP times BoardPathCount to the trial node
weight.
Part B: How all trial nodes are compared to select the
next best move
GamePredictability%: Let MyW = value of selecting the trial
node. Let YourW = weight if the auto-player uses the
current personality to assess the value if the other player
were to select the trial node. (The referee does not allow
"cheating". To calculate YourW, the auto-personality has
to use its own weights.) The final value W of the trial
node is computed by:
W = MyW + (GameTreePredictability% * YourW) / 100
GameTreeMaxBreadth: The computer attempts to "look
ahead" a certain number of moves to help decide the
weight of each free node. It could take a very long time to
evaluate every possible outcome of a single game.
GameTreeMaxBreadth is the factor that limits the breadth
of the beam search used for the game tree.
GameTreeMaxDepth: GameTreeMaxDepth is the maximum
number of moves ahead the computer looks. KEEP THIS
VALUE SMALL. The total number of moves that the
computer will look at has an upper bound of:
GameTreeMaxBreadth ^ GameTreeMaxDepth
abbreviated to: b ^ d.
A 486-33 can compute about 1,000 moves in a
reasonable amount of time. 2,000 moves takes about
twice as long. The important thing to realize is that the
number of moves is exponential with respect to d. If b =
10 and d = 3, the computer already will examine up to
1,000 moves per turn. If you let b = 10 and d = 6, the
computer will examine up to 1,000,000 moves per turn!
Let b and d remain small! Otherwise the computer will
just take to much time to respond. It will be interrupted at
the Maximum Auto Move time; thus, the personality will
not get a chance to finish the calculations anyway!
GameTreeBreadthTrim%: In addition to the maximum auto
move time function, each personality has an option to trim
or increase the breadth of the search as it descends levels
in the game tree. It is most likely that you would want this
factor to be a positive number. Otherwise the breadth at
each level will increase and the time to select a move will
grow very quickly.
GameTreeValueFade%: If you read this far, you deserve to
find out that the personalities don't really use an actual
"game tree" to look ahead moves. I made my own
algorithm to allow experimentation into how important the
value of the perceived weights change as we look deeper
into the game tree. This factor is used to fade or increase
the value of the possible moves when looking ahead. It is
applied as the values are passed back up each level. A
positive value means that the value of each level
decreases based on the level of the game tree.
***
Basic Personality Concepts
***
The information in this section is crucial to the understanding
of the Factor Definitions, It is assumed that you have played
a few games of Span-It! It may be helpful to examine the
Board Diagram.
Vocabulary:
Node
Major Node
Minor Node
Orientation
Owner
Path
Trial Node
Resultant Path
Real Path
Path Major Span
Path Minor Span
***
About the Author
***
Education:
Bachelor of Science University of Wisconsin, Milwaukee
1992 (Computer Science.)
Programmed in C and C++ in a UNIX environment.
Worked on a wide variety of projects, including parallel
processing and infinite precision arithmetic.
Currently a graduate student at UWM studying Cryptography
and Data Security.
Work Experience Overview:
Worked at least five years at a local consulting firm.
Managed projects and coordinated personnel.
Supplied primary customer contact for several major
accounts.
Prepared and presented custom sales and training seminars.
Designed and programmed a wide range of applications.
Developed software for UNIX, DOS, WANG VS and other
operating systems.
Programmed in C, COBOL, Paradox(TM), Informix(TM), and
more.
Helped install and administer Novell(TM), LanTastic(TM),
and UNIX Networks.
Distributed data collection applications with hand-held
computers.
"Downsized" several operations from old minicomputers to
UNIX or PC's.
Self-study highlights:
Artificial intelligence and game playing.
Windows 3.x (tm) API (obvious!)
OS/2 (tm) PM Programming (Span-It! is on the way...)
***
Thank You
***
A quick thanks to my good friend, Jay Dittmann.
His persistence and detailed criticism pushed the limits of his
free time, my compiler, our modems,
and most wonderfully -- the quality of the final product.
Node: a position on the board.
Major Node: a position on the board that always
connects in the direction of the owner's orientation. (See
"maj" in the diagram)
Minor Node: a position on the board that always
connects in the opposite direction of the owner's
orientation. (See "min" in the diagram)
Orientation: the direction in which a player is trying to
connect nodes to win the game. The player who is trying
to connect top to bottom has the vertical orientation. The
player who is trying to connect left to right has the
horizontal orientation.
The orientation does not refer to any specific node. It only
refers to the players and the object of the game.
Owner: the player who has placed a connector in a
node is the owner of that node.
Path: a connected set of nodes owned by the same
player. The horizontal player owns two paths in the
diagram.
Path Major Span: the number of major nodes spanned
by a path. In the diagram, the horizontal player's path in
the upper-left hand corner has a major span of three. The
horizontal player's other path has a major span of zero. If
the vertical player moves in the major node highlighted in
purple, the Resultant Path will also have a major span of
three.
Path Minor Span: the number of minor nodes spanned
by a path. In the diagram, the horizontal player's path in
the upper-left hand corner has a minor span of 1. The
horizontal player's other path also has a minor span of 1.
Trial Node: a single empty node that is the target of the
current weight evaluation during auto play.
Resultant Path: the path that would be created if the
Trial Node were selected as the next move. In the
diagram, consider the "if vertical goes here" node as the
trial node. The PathMajorSpan and PathMinorSpan
graphed in green is that of the resultant path.
Real Path: a path that is already visible on the board.